package com.ksc.storekeeper.client.mvp;

import com.google.gwt.event.shared.EventBus;
import com.google.gwt.inject.client.AsyncProvider;
import com.google.gwt.inject.client.GinModules;
import com.google.gwt.inject.client.Ginjector;
import com.google.inject.Provider;
import com.gwtplatform.mvp.client.proxy.PlaceManager;
import com.ksc.storekeeper.client.i18n.StoreKeeperConstants;
import com.ksc.storekeeper.client.presenter.AddUserPresenter;
import com.ksc.storekeeper.client.presenter.ChangePasswordPresenter;
import com.ksc.storekeeper.client.presenter.ChangeRolePresenter;
import com.ksc.storekeeper.client.presenter.MainPagePresenter;
import com.ksc.storekeeper.client.presenter.MyShowRoomPresenter;
import com.ksc.storekeeper.client.presenter.MyStorePresenter;
import com.ksc.storekeeper.client.presenter.ProductDetailsPresenter;
import com.ksc.storekeeper.client.presenter.SettingsPresenter;
import com.ksc.storekeeper.client.presenter.ShowRoomItemsPresenter;
import com.ksc.storekeeper.client.presenter.StoreAddItemsPresenter;
import com.ksc.storekeeper.client.presenter.StoreItemsPresenter;

@GinModules({ StoreKeeperModule.class })
public interface StoreKeeperGinInjector extends Ginjector {

	PlaceManager getPlaceManager();

	EventBus getEventBus();

	StoreKeeperConstants getStoreKeeperConstants();

	Provider<MainPagePresenter> getMainPagePresenter();

	AsyncProvider<MyStorePresenter> getMyStorePresenter();

	AsyncProvider<StoreItemsPresenter> getStoreItemsPresenter();
	
	AsyncProvider<StoreAddItemsPresenter> getStoreAddItemsPresenter();

	AsyncProvider<MyShowRoomPresenter> getMyShowRoomPresenter();

	AsyncProvider<ShowRoomItemsPresenter> getShowRoomItemsPresenter();

	AsyncProvider<SettingsPresenter> getSettingsPresenter();

	AsyncProvider<AddUserPresenter> getAddUserPresenter();

	AsyncProvider<ChangeRolePresenter> getChangeRolePresenter();

	AsyncProvider<ChangePasswordPresenter> getChangePasswordPresenter();
	
	Provider<ProductDetailsPresenter> getProductDetailsPresenter();
}
